home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 4 / FM Towns Free Software Collection 4 - Disc 1.iso / t_os / wstype / source / icn.c < prev    next >
C/C++ Source or Header  |  1991-10-18  |  6KB  |  193 lines

  1. /***   [icn.c]
  2. *
  3. *    アイコン各種        (C)ささがわ
  4. *
  5. *    For GNU C Compiler (GCC)   Version 1.39
  6. *
  7. ***/
  8.  
  9. #include "graph.h"
  10. #include <mos.h>
  11.  
  12. extern int    PAL_Black;
  13.  
  14. extern int    SROM_mos(int, int, int, int);
  15.  
  16. void ICN_drive(int no, int x, int y) {
  17.     static const unsigned char    icn[][48] = { {
  18.             0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7f,
  19.             0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7f,
  20.             0x00, 0xff, 0x80, 0x7f, 0x3f, 0xff, 0xfe, 0x7f,
  21.             0x00, 0xff, 0x80, 0x7f, 0x00, 0xff, 0x80, 0x7f,
  22.             0x00, 0x00, 0x1c, 0x7f, 0x0c, 0x00, 0x1c, 0x7f,
  23.             0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7f
  24.         }, {
  25.             0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7f,
  26.             0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x78, 0x7f,
  27.             0x0f, 0xc0, 0x78, 0x7f, 0x00, 0x00, 0x78, 0x7f,
  28.             0x0f, 0xc0, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7f,
  29.             0x0f, 0xc0, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7f,
  30.             0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7f
  31.         }, {
  32.             0x00, 0x00, 0x00, 0x7f, 0x01, 0xff, 0xc0, 0x7f,
  33.             0x0e, 0x00, 0x38, 0x7f, 0x30, 0x00, 0x06, 0x7f,
  34.             0x40, 0x7f, 0x01, 0x7f, 0x40, 0x80, 0x81, 0x7f,
  35.             0x40, 0x80, 0x95, 0x7f, 0x40, 0x7f, 0x29, 0x7f,
  36.             0x30, 0x00, 0x06, 0x7f, 0x0e, 0x00, 0x38, 0x7f,
  37.             0x01, 0xff, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0x7f
  38.         }, {
  39.             0x00, 0x00, 0x00, 0x7f, 0x12, 0x49, 0x24, 0x7f,
  40.             0x3f, 0xff, 0xfe, 0x7f, 0x20, 0x00, 0x02, 0x7f,
  41.             0x20, 0x7f, 0x02, 0x7f, 0x30, 0x41, 0x02, 0x7f,
  42.             0x30, 0x41, 0x02, 0x7f, 0x20, 0x7f, 0x02, 0x7f,
  43.             0x20, 0x00, 0x02, 0x7f, 0x3f, 0xff, 0xfe, 0x7f,
  44.             0x12, 0x49, 0x24, 0x7f, 0x00, 0x00, 0x00, 0x7f
  45.         }
  46.     };
  47.     
  48.     if (no < 0 || 3 < no)
  49.         return;
  50.     EGB_putC(0, icn[no], x, y, x + 24, y + 11, PAL_Black);
  51. }
  52.  
  53. void ICN_ya(int no, int x, int y) {
  54.     static const unsigned char    icn[][26] = { {
  55.             0x00, 0x07, 0x00, 0x07, 0x02, 0x07, 0x07, 0x07,
  56.             0x0f, 0x87, 0x1f, 0xc7, 0x3f, 0xe7, 0x07, 0x07,
  57.             0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x07,
  58.             0x00, 0x07
  59.         }, {
  60.             0x00, 0x07, 0x00, 0x07, 0x07, 0x07, 0x07, 0x07,
  61.             0x07, 0x07, 0x07, 0x07, 0x3f, 0xe7, 0x1f, 0xc7,
  62.             0x0f, 0x87, 0x07, 0x07, 0x02, 0x07, 0x00, 0x07,
  63.             0x00, 0x07
  64.         }, {
  65.             0x00, 0x07, 0x00, 0x07, 0x02, 0x07, 0x06, 0x07,
  66.             0x0e, 0x07, 0x1f, 0xe7, 0x3f, 0xe7, 0x1f, 0xe7,
  67.             0x0e, 0x07, 0x06, 0x07, 0x02, 0x07, 0x00, 0x07,
  68.             0x00, 0x07
  69.         }, {
  70.             0x00, 0x07, 0x00, 0x07, 0x02, 0x07, 0x03, 0x07,
  71.             0x03, 0x87, 0x3f, 0xc7, 0x3f, 0xe7, 0x3f, 0xc7,
  72.             0x03, 0x87, 0x03, 0x07, 0x02, 0x07, 0x00, 0x07,
  73.             0x00, 0x07
  74.         }
  75.     };
  76.     
  77.     if (no < 0 || 3 < no)
  78.         return;
  79.     EGB_putC(1, icn[no], x, y, x + 12, y + 12, PAL_Black);
  80. }
  81.  
  82. void ICN_file(int no, int x, int y) {
  83.     static const unsigned char    icn[][64] = { {
  84.             0x0e, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00,
  85.             0x31, 0x80, 0x00, 0x00, 0x60, 0x81, 0x80, 0x00,
  86.             0x31, 0x83, 0xc0, 0x00, 0x1b, 0x86, 0x78, 0x00,
  87.             0x0e, 0xec, 0x28, 0x00, 0x00, 0x38, 0x38, 0x00,
  88.             0x38, 0x7e, 0x00, 0x00, 0x28, 0xc3, 0xe0, 0x00,
  89.             0x39, 0x86, 0x30, 0x00, 0x0f, 0x04, 0x90, 0x00,
  90.             0x06, 0x05, 0x30, 0x00, 0x00, 0x04, 0xe0, 0x00,
  91.             0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0xf2, 0xa0
  92.         }, {
  93.             0x60, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00,
  94.             0x43, 0x80, 0x00, 0x00, 0x40, 0x7f, 0xff, 0xe0,
  95.             0x40, 0x20, 0x00, 0x20, 0x40, 0x2e, 0x00, 0x20,
  96.             0x40, 0x29, 0x00, 0x20, 0x40, 0x29, 0x70, 0x20,
  97.             0x40, 0x29, 0x20, 0x20, 0x40, 0x2e, 0x27, 0x20,
  98.             0x40, 0x20, 0x24, 0xa0, 0x40, 0x20, 0x77, 0x20,
  99.             0x60, 0x20, 0x05, 0x20, 0x3c, 0x20, 0x04, 0xa0,
  100.             0x57, 0xa0, 0x00, 0x20, 0x2a, 0xff, 0xff, 0xe0
  101.         }, {
  102.             0x7f, 0xff, 0xfe, 0x00, 0x40, 0x00, 0x03, 0x00,
  103.             0x40, 0x00, 0x02, 0x80, 0x40, 0x00, 0x02, 0x40,
  104.             0x4f, 0xfe, 0x03, 0xe0, 0x40, 0x00, 0x00, 0x20,
  105.             0x40, 0x00, 0x00, 0x20, 0x40, 0x00, 0x1c, 0x20,
  106.             0x4f, 0xfe, 0x22, 0x20, 0x40, 0x00, 0x41, 0x20,
  107.             0x40, 0x00, 0x41, 0x20, 0x40, 0x00, 0x41, 0x20,
  108.             0x4f, 0xfe, 0x22, 0x20, 0x40, 0x00, 0x1c, 0x20,
  109.             0x40, 0x00, 0x00, 0x20, 0x7f, 0xff, 0xff, 0xe0
  110.         }
  111.     };
  112.     
  113.     if (no < 0 || 2 < no)
  114.         return;
  115.     EGB_putC(1, icn[no], x, y, x + 31, y + 15, PAL_Black);
  116. }
  117.  
  118. void ICN_opt(int no, int x, int y) {
  119.     static const unsigned char    icn[][32] = { {
  120.             0x00, 0x00, 0x00, 0x00,
  121.             0xff, 0xff, 0x80, 0x11,
  122.             0x80, 0x11, 0x80, 0x11,
  123.             0x80, 0x11, 0x80, 0x11,
  124.             0x80, 0x15, 0xff, 0xf5,
  125.             0x80, 0x05, 0x80, 0x3d,
  126.             0x80, 0x01, 0xff, 0xff,
  127.             0x00, 0x00, 0x00, 0x00
  128.         }
  129.     };
  130.     
  131.     if (no < 0 || 0 < no)
  132.         return;
  133.     EGB_putC(1, icn[no], x, y, x + 15, y + 15, PAL_Black);
  134. }
  135.  
  136. void ICN_tree(int x, int y) {
  137.     static const unsigned char    icn[] = {
  138.         0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00,
  139.         0x00, 0x01, 0x80, 0x00, 0x00, 0x03, 0xc0, 0x00,
  140.         0x00, 0x07, 0xe0, 0x00, 0x00, 0x03, 0xc0, 0x00,
  141.         0x00, 0x07, 0xe0, 0x00, 0x00, 0x0f, 0xf0, 0x00,
  142.         0x00, 0x1f, 0xb8, 0x00, 0x00, 0x7f, 0x5e, 0x00,
  143.         0x00, 0x0f, 0xb0, 0x00, 0x00, 0x0f, 0xf0, 0x00,
  144.         0x00, 0x1f, 0xf8, 0x00, 0x00, 0x3b, 0xfc, 0x00,
  145.         0x00, 0x75, 0xce, 0x00, 0x00, 0xfb, 0xcf, 0x00,
  146.         0x07, 0xff, 0xff, 0xc0, 0x03, 0xfc, 0xff, 0x80,
  147.         0x00, 0x3c, 0xfc, 0x00, 0x00, 0x7f, 0xce, 0x00,
  148.         0x00, 0xdf, 0x87, 0x00, 0x01, 0xaf, 0x87, 0x80,
  149.         0x1f, 0xdf, 0xcf, 0xf8, 0x07, 0xff, 0xff, 0xe0,
  150.         0x01, 0xff, 0xff, 0x80, 0x00, 0x1f, 0xf8, 0x00,
  151.         0x00, 0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00,
  152.         0x00, 0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00,
  153.         0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00
  154.     };
  155.     
  156.     EGB_putC(0, icn, x, y, x + 31, y + 31, PAL_Black);
  157. }
  158.  
  159. void ICN_mos(int no) {
  160.     if (no < 0 || 4 < no)
  161.         return;
  162.     switch (no) {
  163.         case 1:
  164.             SROM_mos(82, 15, 15, 15);
  165.             break;
  166.         case 2:
  167.             SROM_mos(87, 1, 1, 15);
  168.             break;
  169.         case 3:
  170.             SROM_mos(84, 9, 9, 15);
  171.             break;
  172.         case 4:
  173.             SROM_mos(85, 4, 27, 15);
  174.             break;
  175.         default:
  176.             SROM_mos(81, 1, 1, 15);
  177.             break;
  178.     }
  179. }
  180.  
  181. void ICN_put(int no, int x, int y, int c) {
  182.     char    par[14];
  183.     
  184.     EGB_color(EGB_work, EGB_COL_FORE, c);
  185.     *((void **)par) = (void *)(0x28000 + 256 * (no - 1));
  186.     *((unsigned short *)(par + 4)) = 0x0108;
  187.     *((short *)(par + 6)) = x;
  188.     *((short *)(par + 8)) = y;
  189.     *((short *)(par + 10)) = x + 31;
  190.     *((short *)(par + 12)) = y + 31;
  191.     EGB_putBlockColor(EGB_work, 0, par);
  192. }
  193.